package com.xsd.parser.module;

import cn.afterturn.easypoi.excel.annotation.Excel;
import org.springframework.util.StringUtils;

import java.io.Serializable;

/**
 * <p>
 * Schema组件属性
 * </p>
 *
 * @author kehaofei
 * @since 2019-12-09
 */
public class ElementModel implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 注册机构标识符
     */
    @Excel(name = "提交机构标识符",replace = { "null_999","_999"} ,orderNum = "1",isImportField = "true")
    private String elementLirTag;
    /**
     * 数据组件标识符
     */
    @Excel(name = "数据组件标识符", orderNum = "2",isImportField = "true")
    private String dataModuleTag;
    /**
     * 版本
     */
    @Excel(name = "版本",replace = { "null_1.0","_1.0"} , orderNum = "3",isImportField = "true")
    private String version;
    /**
     * 组件类型
     */
    @Excel(name = "组件类型", orderNum = "4",isImportField = "true")
    private String elementType;
    /**
     * 数据类型英文名称
     */
    @Excel(name = "数据类型英文名称", orderNum = "5",isImportField = "true")
    private String dataTypeEN;
    /**
     * 数据元素英文名称
     */
    @Excel(name = "数据元素英文名称", orderNum = "6",isImportField = "true")
    private String dataElementEN;
    /**
     * 数据组件中文名称
     */
    @Excel(name = "数据组件中文名称", orderNum = "7",isImportField = "true")
    private String dataModuleCN;
    /**
     * 数据类型基类/数据元素约束类型英文名称
     */
    @Excel(name = "数据类型基类/数据元素约束类型英文名称", orderNum = "8",isImportField = "true")
    private String dataBaseTypeEN;
    /**
     * 数据组件英文定义
     */
    @Excel(name = "数据组件英文定义", orderNum = "9",isImportField = "true")
    private String dataModuleDefEN;
    /**
     * 数据组件中文定义
     */
    @Excel(name = "数据组件中文定义", orderNum = "10",isImportField = "true")
    private String dataModuleDefCN;
    /**
     * 所有引用标准
     */
    @Excel(name = "所有引用标准", orderNum = "11",isImportField = "true")
    private String allRefStandard;

    /**
     * 注册机构标识符
     * @return
     */
    public String getElementLirTag() {
        if(elementLirTag==null || elementLirTag.isEmpty()){
            return "";
        }
        return elementLirTag.trim();
    }

    public void setElementLirTag(String elementLirTag) {
        this.elementLirTag = elementLirTag;
    }

    /**
     * 数据组件标识符
     * @return
     */
    public String getDataModuleTag() {
        if(dataModuleTag==null || dataModuleTag.isEmpty()){
            return "";
        }
        return dataModuleTag.trim();
    }

    public void setDataModuleTag(String dataModuleTag) {
        this.dataModuleTag = dataModuleTag;
    }

    /**
     * 版本
     * @return
     */
    public String getVersion() {
        if(version==null || version.isEmpty()){
            return "";
        }
        return version;
    }

    public void setVersion(String version) {
        this.version = version;
    }

    /**
     * 组件类型
     * @return
     */
    public String getElementType() {
        if(elementType==null || elementType.isEmpty()){
            return "";
        }
        return elementType.trim();
    }

    public void setElementType(String elementType) {
        this.elementType = elementType;
    }

    /**
     * 数据类型英文名称
     * @return
     */
    public String getDataTypeEN() {
        if(dataTypeEN==null || dataTypeEN.isEmpty()){
            return "";
        }
        return dataTypeEN;
    }

    public void setDataTypeEN(String dataTypeEN) {
        this.dataTypeEN = dataTypeEN;
    }

    /**
     * 数据元素英文名称
     * @return
     */
    public String getDataElementEN() {
        if(dataElementEN==null || dataElementEN.isEmpty()){
            return "";
        }
        return dataElementEN.trim();
    }

    public void setDataElementEN(String dataElementEN) {
        this.dataElementEN = dataElementEN;
    }

    /**
     * 数据组件中文名称
     * @return
     */
    public String getDataModuleCN() {
        if(dataModuleCN==null || dataModuleCN.isEmpty()){
            return "";
        }
        return dataModuleCN.trim();
    }

    public void setDataModuleCN(String dataModuleCN) {
        this.dataModuleCN = dataModuleCN;
    }

    /**
     * 数据类型基类/数据元素约束类型英文名称
     * @return
     */
    public String getDataBaseTypeEN() {
        if(dataBaseTypeEN==null || dataBaseTypeEN.isEmpty()){
            return "";
        }
        return dataBaseTypeEN.trim();
    }

    public void setDataBaseTypeEN(String dataBaseTypeEN) {
        this.dataBaseTypeEN = dataBaseTypeEN;
    }

    /**
     * 数据组件英文定义
     * @return
     */
    public String getDataModuleDefEN() {
        if(dataModuleDefEN==null || dataModuleDefEN.isEmpty()){
            return "";
        }
        return dataModuleDefEN.trim();
    }

    public void setDataModuleDefEN(String dataModuleDefEN) {
        this.dataModuleDefEN = dataModuleDefEN;
    }

    /**
     * 数据组件中文定义
     * @return
     */
    public String getDataModuleDefCN() {
        if(dataModuleDefCN==null || dataModuleDefCN.isEmpty()){
            return "";
        }
        return dataModuleDefCN.trim();
    }

    public void setDataModuleDefCN(String dataModuleDefCN) {
        this.dataModuleDefCN = dataModuleDefCN;
    }

    /**
     * 所有引用标准
     * @return
     */
    public String getAllRefStandard() {
        if(allRefStandard==null || allRefStandard.isEmpty()){
            return "";
        }
        return allRefStandard.trim();
    }

    public void setAllRefStandard(String allRefStandard) {
        this.allRefStandard = allRefStandard;
    }


    public boolean checkOtherNull(){
        if(this.getDataTypeEN().isEmpty() && this.getDataElementEN().isEmpty()
                && this.getDataModuleCN().isEmpty() && this.getDataModuleDefEN().isEmpty()
                && this.getDataModuleDefCN().isEmpty() && this.getDataBaseTypeEN().isEmpty()){
            return true;
        }
        return false;
    }

    @Override
    public String toString() {
        return "ElementModel{" +
                "elementLirTag='" + elementLirTag + '\'' +
                ", dataModuleTag='" + dataModuleTag + '\'' +
                ", version='" + version + '\'' +
                ", elementType='" + elementType + '\'' +
                ", dataTypeEN='" + dataTypeEN + '\'' +
                ", dataElementEN='" + dataElementEN + '\'' +
                ", dataModuleCN='" + dataModuleCN + '\'' +
                ", dataBaseTypeEN='" + dataBaseTypeEN + '\'' +
                ", dataModuleDefEN='" + dataModuleDefEN + '\'' +
                ", dataModuleDefCN='" + dataModuleDefCN + '\'' +
                ", allRefStandard='" + allRefStandard + '\'' +
                '}';
    }
}
